package suanfa;

public class BitTest {
    public static void main(String[] args) {
        int val = 3;
        opposite(val);
    }

    private static void opposite(int val){
        //求相反数，取反+1
        System.out.println(~val+1);
        //-val
        System.out.println(-val);
        //0的相反数为0,（它取反除了符号位全变1了，+1后全变0了，进位到最高位就舍弃了，所以还是0）
        System.out.println(~0+1);
        //因为负数最小值因为没有对应的正数（由于0占了正数的一个位置，所以负数比正数多一个数）
        //所以负数最小值的相反数还是它自己（它取反除了符号位全变1了，+1后除了符号位全变0了，这个值还是负数最小值）
        System.out.println(~Integer.MIN_VALUE+1 == Integer.MIN_VALUE);
    }

    private static void printBit(int val) {
        for (int i = 31; i > -1; i--) {
            System.out.print((1 << i & val) == 0 ? "0" : "1");
        }
        System.out.println("");
    }


}
